home *** CD-ROM | disk | FTP | other *** search
/ Programming an RTS Game with Direct3D / Programming an RTS Game with Direct3D.iso / Examples / Chapter 16 / Example 16.1 / avi.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-06-30  |  1.1 KB  |  73 lines

  1. #ifndef _CJ_AVI_
  2. #define _CJ_AVI_
  3.  
  4. #include <d3dx9.h>
  5. #include <vfw.h>
  6. #include <vector>
  7. #include "debug.h"
  8. #include "sound.h"
  9.  
  10. struct AUDIO_STREAM{
  11.     AUDIO_STREAM()
  12.     {
  13.         m_pStream = NULL;
  14.         m_pData = NULL;
  15.     }
  16.  
  17.     ~AUDIO_STREAM()
  18.     {
  19.         if(m_pStream)AVIStreamRelease(m_pStream);
  20.         if(m_pData)delete [] m_pData;
  21.     }
  22.  
  23.     PAVISTREAM m_pStream;
  24.     BYTE *m_pData;
  25. };
  26.  
  27. struct VIDEO_STREAM{
  28.     VIDEO_STREAM()
  29.     {
  30.         m_pStream = NULL;
  31.         m_pGetFrame = NULL;
  32.     }
  33.  
  34.     ~VIDEO_STREAM()
  35.     {
  36.         if(m_pGetFrame)AVIStreamGetFrameClose(m_pGetFrame);
  37.         if(m_pStream)AVIStreamRelease(m_pStream);
  38.     }
  39.  
  40.     PAVISTREAM m_pStream;
  41.     PGETFRAME m_pGetFrame;
  42.     long m_runTime;
  43. };
  44.  
  45. class AVI{
  46.     public:
  47.         AVI();
  48.         ~AVI();
  49.  
  50.         HRESULT Load(char fileName[], IDirect3DDevice9* Dev);
  51.         void Release();
  52.  
  53.         void Play();
  54.         void Stop();
  55.         bool Done();
  56.         void Update(float deltaTime);
  57.  
  58.         IDirect3DTexture9 *m_pCurrentFrame;
  59.  
  60.     private:
  61.  
  62.         IDirect3DDevice9* m_pDevice;
  63.         IAVIFile *m_pAviFile;
  64.  
  65.         std::vector<AUDIO_STREAM*> m_audio;
  66.         std::vector<VIDEO_STREAM*> m_video;
  67.     
  68.         long m_timeMS;
  69.         bool m_playing, m_done;
  70.         int m_activeStream, m_lastFrame;
  71. };
  72.  
  73. #endif